#pragma once
#include "Video.h"
#include "Texture2D.h"
#include "Texture3D.h"

namespace Reign
{namespace Video
{namespace D3D10
{
	public ref class ShaderResource : ShaderResourceI
	{
		#pragma region Properties
		private: Video^ video;
		private: ID3D10ShaderResourceView **vertexResources, **pixelResources;
		private: int vertexIndex, pixelIndex;

		private: string^ name;
		public: property string^ Name {string^ get();}
		#pragma endregion

		#pragma region Constructors
		public: ShaderResource(VideoI^ video, ID3D10ShaderResourceView** vertexResources, ID3D10ShaderResourceView** pixelResources, int vertexIndex, int pixelIndex, string^ name);
		#pragma endregion

		#pragma region Methods
		public: virtual void Set(Texture2DI^ resource);
		public: virtual void Set(Texture3DI^ resource);
		#pragma endregion
	};
}
}
}